﻿using System;
using System.Collections.Generic;
using System.Text;
using YSC_Core.BLL.Domain.CommonModels;
using YSC_Core.BLL.Domain.Entity;
using YSC_Core.BLL.Domain.ViewModels;

namespace YSC_Services.BLL.Services.Interfaces
{
    /// <summary>
    /// 用户接口
    /// </summary>
    public interface IUserAppServices
    {
        YscUser OAuthUser(string userName, string passWord);
        YscUser OAuthUserId(string userid);

        /// <summary>
        /// 登陆接口
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="passWord"></param>
        /// <returns></returns>
        ReturnValueModel Login(string userName, string passWord);

        /// <summary>
        /// 微信登陆
        /// </summary>
        /// <param name="openid"></param>
        /// <returns></returns>
        ReturnValueModel WxLogin(string openid);

        /// <summary>
        /// 发送验证码
        /// </summary>
        /// <returns></returns>
        ReturnValueModel SMSCode(string phone);

        /// <summary>
        /// 手机号登陆
        /// </summary>
        /// <param name="smsCode">验证码</param>
        /// <returns></returns>
        ReturnValueModel SMSLogin(string phone, string smsCode);

        /// <summary>
        /// 微信登陆
        /// </summary>
        /// <param name="encryptedDataStr"></param>
        /// <param name="key"></param>
        /// <param name="iv"></param>
        /// <returns></returns>
        ReturnValueModel WXLogin(string encryptedDataStr, string key, string iv);

        /// <summary>
        /// 微信注册
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        ReturnValueModel WXRegistered(WXRegisteredModel model);

        /// <summary>
        /// 用户注册
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        ReturnValueModel Registered(RegisteredModel model);

        /// <summary>
        /// 用户基本信息
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        ReturnValueModel GetUser(string userId);

        /// <summary>
        /// 用户基本信息修改
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        ReturnValueModel UpdateUser(YscUserModel model);

        /// <summary>
        /// 用户媒体信息更新
        /// </summary>
        /// <returns></returns>
        ReturnValueModel UpdateUserMedia(YscUserMediaModel model);

        /// <summary>
        /// 验证码验证
        /// </summary>
        /// <param name="smsCode"></param>
        /// <param name="phone"></param>
        /// <returns></returns>
        ReturnValueModel SMSVerification(string smsCode, string phone);

        /// <summary>
        /// 用户密码修改
        /// </summary>
        /// <param name="Password"></param>
        /// <param name="phone"></param>
        /// <returns></returns>
        ReturnValueModel UpdateUserPassword(string phone, string Password);

        /// <summary>
        /// 用户认证
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        ReturnValueModel AddUserAttest(UserAttestModel model);

        /// <summary>
        /// 用户历史报价
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="dateTime"></param>
        /// <returns></returns>
        ReturnValueModel GetUserHistoryPriceAll(int index, int size, string userId, string dateTime);

        /// <summary>
        /// 游客历史记录
        /// </summary>
        /// <param name="index"></param>
        /// <param name="size"></param>
        /// <param name="userId"></param>
        /// <param name="dateTime"></param>
        /// <returns></returns>
        ReturnValueModel GetUserHistoryPriceYKAll(int index, int size, string userId, string dateTime);
    }
}